﻿using System;
using System.Collections.Generic;
using GalaSoft.MvvmLight;
using Mutzl.Samples.VideoApp.Controls;

namespace Mutzl.Samples.VideoApp.LocalContent.Model
{
    public class Video : ObservableObject, IResizable
    {
        public Video()
        {

        }

        public Video(string id, string title, string description, string videoName, int width, int height)
            : this()
        {
            _id = id;
            _title = title;
            _description = description;

            //Todo: A01. Bei Bedarf mp4-Extension ändern
            _videoPath = string.Format("ms-appx:///Assets/Videos/{0}.mp4", videoName);

            //Todo: A02. Bei Bedarf jpg-Extension ändern
            _thumbNailPath = string.Format("ms-appx:///Assets/ThumbNails/{0}.jpg", videoName);
            // in dieser Variante ThumbNail gleich Poster, könnte aber natürlich verschieden sein.
            _posterPath = string.Format("ms-appx:///Assets/ThumbNails/{0}.jpg", videoName);

            Width = width;
            Height = height;
        }

        public Video(string id, string title, string description, string videoName)
            : this(id, title, description, videoName, 1, 1)
        {
        }

        private string _id;
        public string Id
        {
            get { return _id; }
            set
            {
                if (_id == value) return;
                _id = value;
                RaisePropertyChanged(() => Id);
            }
        }

        private string _title;
        public string Title
        {
            get { return _title; }
            set
            {
                if (_title == value) return;
                _title = value;
                RaisePropertyChanged(() => Title);
            }
        }

        private string _description;
        public string Description
        {
            get { return _description; }
            set
            {
                if (_description == value) return;
                _description = value;
                RaisePropertyChanged(() => Description);
            }
        }

        private string _thumbNailPath;
        public string ThumbNailPath
        {
            get { return _thumbNailPath; }
            set
            {
                if (_thumbNailPath == value) return;
                _thumbNailPath = value;
                RaisePropertyChanged(() => ThumbNailPath);
            }
        }

        private string _posterPath;
        public string PosterPath
        {
            get { return _posterPath; }
            set
            {
                if (_posterPath == value) return;
                _posterPath = value;
                RaisePropertyChanged(() => PosterPath);
            }
        }

        private string _videoPath;
        public string VideoPath
        {
            get { return _videoPath; }
            set
            {
                if (_videoPath == value) return;
                _videoPath = value;
                RaisePropertyChanged(() => VideoPath);
            }
        }

        //Todo: A03. weitere Properties je nach Bedarf hinzufügen (Speaker, Author, Date, ...)

        //Implementierung von IResizable
        //Width und Height für die variable GridView in der Hauptansicht
        public int Width { get; set; }
        public int Height { get; set; }

        public static IEnumerable<Video> GetVideos()
        {
            
            //Todo: A04. Die Videos mit Titel, Beschreibung, etc. hier initialisieren.
             
            yield return new Video("1",
                "Lernen Sie Windows kennen",
                "Windows 8 und Windows RT drehen sich um Ihr Leben – Ihre Freunde, Ihre Famile, Ihre Apps und Ihre Inhalte. Dank neuer Elemente, z. B. der Startseite, den Charms und einem Microsoft-Konto, können Sie weniger Zeit mit Suchen und mehr Zeit mit Aktivitäten verbringen. Außerdem gibt es den Windows Store, einen neuen Marktplatz für Apps. In Windows sind bereits einige Apps enthalten, im Store sind jedoch viele weitere verfügbar. Außerdem gibt es einen neuen Webbrowser, der schneller, sicherer und intuitiver als jemals zuvor ist: Internet Explorer 10."
                + Environment.NewLine + Environment.NewLine + "Windows vernetzt Ihr Leben.",
                "01 Übersicht",
                3, 2);

            yield return new Video("2",
                "Suchen, Teilen, Ändern von Einstellungen und mehr",
                "Egal, wo Sie sich gerade in Windows 8 oder Windows RT befinden: Charms helfen Ihnen bei den wichtigsten Aufgaben, z. B. beim Suchen, Teilen von Links und Fotos, Anschließen von Geräten und Ändern von Einstellungen. Die Funktionen von Charms ändern sich, wenn Sie sich auf der Startseite befinden oder eine App verwenden, also legen Sie los. "
                + Environment.NewLine + Environment.NewLine + "Die fünf Charms – Suche, Teilen, Start, Geräte und Einstellungen – sind jederzeit auf der rechten Seite des Bildschirms verfügbar. So werden sie geöffnet: "
                + Environment.NewLine + Environment.NewLine + "Streifen Sie auf einer Touchoberfläche vom rechten Bildschirmrand nach innen und tippen Sie dann auf den gewünschten Charm. "
                + Environment.NewLine + Environment.NewLine + "Bewegen Sie Ihren Mauszeiger andernfalls in die obere oder untere rechte Ecke des Bildschirms und dann nach oben bzw. unten, um den gewünschten Charm anzuklicken. ",
                "02 Suchen, Teilen und mehr");

            yield return new Video("3",
                "Suchen",
                "Sie können den Charm \"Suche\" verwenden, um nach Apps, Einstellungen und Dateien auf Ihrem PC zu suchen. Darüber hinaus können Sie mit dem Charm \"Suche\" nach Elementen in der geöffneten App oder einer anderen von Ihnen ausgewählten App suchen. So können Sie z. B. mithilfe des Charms \"Suche\" nach einer neuen App im Store oder nach Personen in der Kontakte-App suchen.",
                "03a Suche in Windows",
                2, 1);

            yield return new Video("4",
                "Entdecken Sie den Windows Store",
                "Entdecken Sie im Windows Store tolle Apps für Windows 8 und Windows RT. Informieren Sie sich über die jeweiligen Apps, oder tippen bzw. klicken Sie auf einen Kategorienamen, um alle Apps in der Kategorie anzuzeigen. Sie können auch in Gruppen aufgelistete Apps anzeigen, wie beispielsweise Top free und Neuveröffentlichungen. Wenn Sie wissen, welche Apps Sie abrufen möchten, geben Sie diese einfach ein, wenn Sie sich im Store befinden. Es werden Ergebnisse für Apps angezeigt, die mit Ihrer Suche übereinstimmen. "
                + Environment.NewLine + Environment.NewLine + "Einige Apps, wie beispielsweise Kontakte, Mail und Kalender, sind in Windows 8 und Windows RT integriert – sie sind bereits bei der ersten Anmeldung auf der Startseite. Sehen Sie sich eine Liste der grundlegenden Apps an, die bereits auf Ihrem PC vorhanden sind. "
                + Environment.NewLine + Environment.NewLine + "Mit Windows können Sie sich im Windows Store tolle Apps holen.",
                "03b Entdecken Sie den Windows Store");

            yield return new Video("5",
                "Knüpfen und Pflegen von Kontakten",
                "Mit Windows 8 und Windows RT können Sie mit Ihren Freunden, Verwandten und Kollegen in Kontakt bleiben, indem diese in einer gemeinsamen Kontaktliste zusammengefasst werden. Bleiben Sie hinsichtlich der neuesten Fotos, Updates und Tweets auf dem Laufenden, und teilen Sie Ihre Ansichten oder Fotos mit wem immer Sie möchten — ohne dass Sie sich bei verschiedenen Websites anmelden müssen."
                + Environment.NewLine + Environment.NewLine + "Mit Windows bleiben Sie mit den Menschen in Kontakt, die Ihnen besonders wichtig sind.",
                "03c1 Knüpfen und Pflegen von Kontakten",
                2, 1);

            yield return new Video("6",
                "Teilen von Fotos, Links und anderen Inhalten",
                "Der Charm \"Teilen\" bietet eine schnelle Möglichkeit, Dateien und andere Informationen mit Bekannten zu teilen und Daten an andere Apps zu senden. Er ist überall in Windows 8 und Windows RT verfügbar. Sie müssen Ihre Tätigkeit also nicht unterbrechen, um beispielsweise neue Urlaubsfotos, einen Link zu einem Artikel, den Sie gerade lesen, oder eine Wegbeschreibung zu einem Restaurant zu teilen. Sie können die Informationen entweder nur mit einigen wenigen Personen teilen, Ihr gesamtes soziales Netzwerk informieren oder diese für spätere Verwendungszwecke an andere Apps senden."
                + Environment.NewLine + Environment.NewLine + "Hier erfahren Sie, wie Sie den Charm „Teilen“ verwenden, wenn Sie innerhalb einer App etwas teilen möchten.",
                "03c2 Teilen von Fotos, Links und anderen Inhalten");

            yield return new Video("7",
                "\"Neu\", \"Aktualisieren\" und weitere Befehle",
                "Befehle wie \"Neu\", \"Aktualisieren\" und \"Spielen\" sind beim Verwenden von Apps von großer Bedeutung. Diese Befehle sind wichtig, sie benötigen diese jedoch nur gelegentlich, und sie nehmen einigen Platz ein. Damit Sie den gesamten Bildschirm für das Lesen einer Webseite oder das Anzeigen eines Videos zur Verfügung haben, werden die App-Befehle erst angezeigt, wenn Sie diese benötigen. Wenn Sie diese einsetzen möchten, werden sie oben oder unten auf dem Bildschirm oder als Menü eines ausgewählten Elements angezeigt. So können Sie beispielsweise auf der Startseite nach oben streifen oder mit der rechten Maustaste klicken, um den Befehl \"Alle Apps\" anzuzeigen. Wenn Sie nach unten streifen oder mit der rechten Maustaste auf eine Kachel klicken, wird diese ausgewählt und die Optionen zum Ändern der Kachel angezeigt. ",
                "05 So verwenden Sie Apps",
                2, 1);

            yield return new Video("8",
                "Wechseln zwischen Apps ",
                "Gelegentlich müssen Sie zur gerade verwendeten App zurückkehren oder schnell zwischen den zuletzt verwendeten Apps wechseln."
                + Environment.NewLine + Environment.NewLine + "Gehen Sie wie folgt vor, um zur gerade verwendeten App zu wechseln: "
                + Environment.NewLine + Environment.NewLine + "Auf einer Touchoberfläche streifen Sie über den linken Rand. "
                + Environment.NewLine + Environment.NewLine + "Mit einer Maus bewegen Sie den Zeiger in die obere linke Ecke und klicken dort. "
                + Environment.NewLine + Environment.NewLine + "Gehen Sie wie folgt vor, um zu einer anderen zuletzt verwendeten App zu wechseln: "
                + Environment.NewLine + Environment.NewLine + "Auf einer Touchoberfläche streifen Sie über den linken Rand, ohne den Finger abzuheben, und bewegen die App dann zurück zum linken Rand. Es werden die kürzlich verwendeten Apps und die Startseite angezeigt. Tippen Sie auf die gewünschte App. "
                + Environment.NewLine + Environment.NewLine + "Mit einer Maus bewegen Sie den Zeiger in die obere linke Bildschirmecke und dann am linken Rand herunter. Es werden die kürzlich verwendeten Apps und die Startseite angezeigt. Klicken Sie auf die gewünschte App. ",
                "06 Wechseln zwischen Apps");

            yield return new Video("9",
                "Andocken von Apps: Gleichzeitiges Verwenden von zwei Apps",
                "Behalten Sie Ihre Musikwiedergabeliste im Blick, während Sie an einem Bericht arbeiten. Gleichen Sie die Termine Ihres Lieblingsteams mit Ihrem Kalender ab. Arbeiten Sie produktiver, indem Sie eine zweite App links oder rechts am Bildschirm anheften. Angeheftete Apps verhalten sich genau so wie im Vollbildmodus, werden jedoch intelligent an die geringere Größe angepasst. Experimentieren Sie mit verschiedenen Layouts, um die für Sie passende Option zu finden.",
                "07 Gleichzeitiges Verwenden von zwei Apps",
                1, 2);

        }


    }
}
